We introduce process-oriented programming as a natural extension ofobject-oriented programming for parallel computing. It is based on theobservation that every class of an object-oriented language can be instantiatedas a process, accessible via a remote pointer. The introduction of processpointers requires no syntax extension, identifies processes with programmingobjects, and enables processes to exchange information simply by executingremote methods. Process-oriented programming is a high-level languagealternative to multithreading, MPI and many other languages, environments andtools currently used for parallel computations. It implements naturalobject-based parallelism using only minimal syntax extension of existinglanguages, such as C++ and Python, and has therefore the potential to lead towidespread adoption of parallel programming. We implemented a prototype systemfor running processes using C++ with MPI and used it to compute a largethree-dimensional Fourier transform on a computer cluster built of commodityhardware components. Three-dimensional Fourier transform is a prototype of adata-intensive application with a complex data-access pattern. Theprocess-oriented code is only a few hundred lines long, and attains very highdata throughput by achieving massive parallelism and maximizing hardwareutilization.
展开▼